\section{Introducci\'on}

En el presente trabajo, nos proponemos programar una aplicaci\'on de compresión de archivos escrito mayormente en lenguaje ensamblador. Para ello implementaremos el algoritmo de compresión de Huffman, un método relativamente simple para codificar
una cadena de bytes en otra más corta. De esta forma nuestro programa podrá comprimir un archivo, y aplicando el proceso
inverso, descomprimirlo. \\
	

Usaremos y manejaremos correctamente esctructuras de datos estáticas y dinámicas, como ser
árboles binarios, listas enlazadas, tablas de codigos y otras. Dentro del proceso necesario para codificar y
decodificar los archivos, se manejan datos a nivel de bits. Ya que el tamaño mínimo de dato con la que se puede
operar en Assembler es de 8 bits, manipularemos a partir de divisiones, multiplicaciones y shifts lógicos los registros
para poder almacenar la información deseada. \\

En cuanto a la implementaci\'on del programa, se utilizar\'an estructuras y funciones dadas, las cuales deberemos programar. La interfaz de usuario ya fue programada de antemano.\\
La codificación de Huffman se basa en crear un árbol binario con los códigos que se leen de la entrada. Éstos se traducen a codigos más cortos que conforman las ramas del arbol, siendo una hoja un caracter leido originalmente y el camino desde la raíz hasta la hoja, el código nuevo.
 Este árbol tiene la propiedad de tener ramas mas cortas (o sea, generar códigos mas cortos) para caracteres con mayor cantidad de apariciones.
\\\\
En las siguientes secciones se explicar\'a detalladamente el trabajo realizado, mostrando diferentes resultados 
intermedios, decisiones tomadas, problemas surgidos y diversos tests con sus resultados.

\pagebreak
